Mobile computing devices (e.g., smart phones, tablets) are ubiquitous. Additionally, the number and variety of tasks performed by mobile computing devices continue to expand. One task users increasingly demand from their mobile computing devices is high quality imaging (e.g., photography). In some cases, an image may be acquired to record an event. But in other cases, an image may be a means to an end. For example, the image may be input to a downstream application (e.g., optical character recognition, image detection) to produce some other result. The quality of the result produced by the downstream application may depend on the quality of the image provided to that downstream application. The quality of the image may in turn depend on the lighting conditions under which the image was acquired. Sub-optimal lighting conditions may produce sub-optimal images.
Conventional systems may have treated image acquisition and image processing as unrelated events, where the image is acquired by one process and then image optimization is handled as a discrete event by another process. Discrete processes may not consider resampling images after modifying an image acquisition environment. These isolated processes may be inadequate for some purposes. Consider a tourist visiting a restaurant in Paris. The tourist may not speak French but may want to order from a French menu. The tourist may therefore take an image of the menu, intending to provide it to a French to English translation application. Before the image is provided for translation, an optical character recognition (OCR) application may attempt to sharpen up the image, to achieve a desired contrast, to achieve a desired edge detection, and to identify characters. However, the lighting conditions in the restaurant may have been sub-optimal, or barely even acceptable, and thus the success rate for both the OCR and then the French to English translation may be inadequate.